c++ ,protected 和 private修饰的构造函数

c++

protected 和 private修饰的构造函数:

1.在类的外部创建对象时,不能调用protected或private修饰的构造函数。

2.当子类中的构造函数调用父类的private构造函数时会错,当子类中的构造函数调用父类中的 public或protected构造函数时是对的。

#include <iostream>
using namespace std;

////////////////////////////////////////////////
class A {
public:
    A();
protected:
    A(int x);
private:
    A(int x, int y);
};
A::A() {
    cout<<"A::A() public"<<endl;
}
A::A(int x) {
    cout<<"A(int x) protected"<<endl;
}
A::A(int x, int y) {
    cout<<"A(int x,int y) private"<<endl;
}
////////////////////////////////////////////////
class B:public A {
public:
    B();
    B(int x);
    //B(int x , int y);
    void show();
};
B::B(): A() {//public A()

}
B::B(int x): A(x) {//子类中的构造函数可调用父类的protected构造函数

}

//当子类中的构造函数调用父类的private构造函数时会错
// error C2248: “A::A”: 无法访问 private 成员(在“A”类中声明)
// B::B(int x, int y): A(x,y){
//
// }

////////////////////////////////////////////////
void f1()
{
    A a1;            // A::A() public
    //    A a2(1);    //error:在类的外部创建对象时,不能调用protected或private修饰的构造函数。
    //    A a3(1,2);    //error:在类的外部创建对象时,不能调用protected或private修饰的构造函数。
    B b1(33);       // A(int x) protected
}

int main()
{
    f1();

    while(1);
    return 0 ;
}
时间: 2024-10-10 20:25:14

c++ ,protected 和 private修饰的构造函数的相关文章

Java的权限修饰符(public,protected,default,private)

访问权限修饰符权限从高到低排列是public  ,protected  ,default, private. 一.根据"是否是同包"."是否是子类"分为4中情况+本类 5种情况 二.把 同包中的子类 和 同包中的非子类 合并为 同包 访问修饰符 本类 同包 不同包,子类 不同包,非子类 public √ √ √ √ protected √ √ √   default(friendly) √ √     private √      

java 修饰符的作用一(public protected default private 组)

1.public protected default private 组 public 权限最大,同类,同包,不同包,同包子类父类之间,不同包子类父类之间都可以访问. java 默认的权限是default,即friendly(注:friendly 在java中没有,是c的说法.) 同类,同包,同包子类父类都可以访问. protected受保护的,同类,同包,同包子类父类,不同包子类父类都可以访问 private 私有的权限最小,同类可以访问. 图如下: 位置                   

java四种权限修饰符(public &gt; protected &gt; (default) &gt; private)

权限修饰符在哪里可以访问 (default) : 表示什么权限修饰符都不写 位置 public protected (default) private 同一个类 yes yes yes yes 同一个包 yes yes yes no 不同包子类 yes yes no no 不同包非子类 yes no no no 原文地址:https://www.cnblogs.com/zhuobo/p/10612656.html

private/默认/protected/public权限修饰符的区别

private/默认/protected/public权限修饰符和面向对象的三大特性的封装性有着密切关系.它们都可以修饰类的成员,其中的默认和public还可以修饰类. 类的成员包括:成员变量.成员方法.构造方法.内部类.代码块. 其中: public:修饰类可以被同一项目所有包中的所有类访问(类可见性). 默认:可被同一包中的类访问(包可见性). 小结: 1.内部类属于类的成员,可以使用以上四个修饰符修饰,这一点和类不同. 2.如何使用:类的属性一般使用private修饰,可以通过public

JAVA访问修饰符 构造函数的问题(转)

JAVA访问修饰符 构造函数的问题 java访问修饰符-限定符总结(类比C#) JAVA访问修饰符----------[public | default | protected | private ] public: 完全开发protected: 同包及子类访问default(无): 同包访问private: 只能本类访问 JAVA用于类的修饰符(2个)和限定符(2个):---------------public: 完全开发default(无) : 同包访问 abstract: 指定为抽象类fi

访问控制 protected, public, private 对比

OOP 3大特性:数据抽象,继承,动态绑定 3中访问标号 protected, public, private 对比 用类进行数据抽象:用继承类继承基类的成员,实现继承:通过将基类相应函数声明为virtual,是编译器在运行时决定调用基类函数or派生类函数 完成动态绑定,即表现多态性. 多态性:利用继承和动态绑定,通过基类指针和引用来表现. 动态绑定两个条件:1. 虚函数,2. 指针或引用 class Item_book { private: std::string isdn; protecte

public,protected,friendly,private的访问权限

请说出作用域public,private,protected,以及不写时的区别 这四个作用域的可见范围如下表所示. 说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly. 作用域    当前类  同一package  子孙类  其他package public        √        √           √        √ protected     √         √         √        × friendly      √          √

《编程导论(Java)&#183;6.3 private修饰符》

修饰符private提供了最高的保护和最低的可见度:private修饰的域.方法和嵌套类型,只能在它的定义类中访问. 6.3.1 private 各类书籍中会有一些程序设计上的清规戒律,如: ★以private修饰所有的成员变量(Make all Member Variables private.). ★以private修饰任一助手方法.(Make any helper methods private). 这些启发式规则是一种自律条款.对于Java包的设计者而言,包级私有已经是良好的天然边界(不

【PHP面向对象(OOP)编程入门教程】13.访问类型(public,protected,private)

类型的访问修饰符允许开发人员对类成员的访问进行限制,这是PHP5的新特性,但却是OOP语言的一个好的特性.而且大多数OOP语言都已支持此特性.PHP5支持如下3种访问修饰符: public (公有的.默认的),protected (受保护的)和private (私有的)三种. public 公有修饰符,类中的成员将没有访问限制,所有的外部成员都可以访问(读和写)这个类成员(包括成员属性和成员方法),在PHP5之前的所有版本中,PHP 中类的成员都是public的,而且在PHP5中如果类的成员没有