【C++】类作用域详解
目录
2. 不能从外部访问类成员,公有成员函数如此,要调用公有成员函数,必须通过对象
4. 使用成员运算符(.)、简介成员运算符(->)或作用解析运算符(::)
C++11提供一种新的枚举, class 或者 struct
在类定义中的 名称作用域都为整个类,作用域为 整个类值在该类是已知的
1. 可以在不同类中使用相同的类成员名
-
class Stock {
-
public:
-
int memi;
-
double memd;
-
};
-
-
class Jodbj {
-
public:
-
int memi;
-
double memd;
-
};
2. 不能从外部访问类成员,公有成员函数如此,要调用公有成员函数,必须通过对象
Stock sleeper(........);
sleeper.show();
show();//这是错的!
3. 定义成员函数时必须使用作用域解析运算符
-
void Stock::update(double price)
-
{
-
...
-
}
4. 使用成员运算符(.)、简介成员运算符(->)或作用解析运算符(::)
-
Class obj; // Class is some class type
-
Class *ptr = &obj;
-
-
// member is a data member of that class
-
ptr->member; // fetches member from the object to which ptr points
-
obj.member; // fetches member from the object named obj
-
-
// memfcn is a function member of that class
-
ptr->memfcn(); // runs memfcn on the object to which ptr points
-
obj.memfcn(); // runs memfcn on the object named obj
5. 作用域为类的常量
这样是错误的:
-
class Bakery
-
{
-
private:
-
const int Months = 12;
-
double const[Months];
-
-
}
声明类只是描述了对象的形式,并没有创建对象
在创建对象前,将没有用于存储值得空间。
5.1 第一种方式是在类中声明一个枚举
-
class Bakery
-
{
-
private:
-
enum { Months =12 };
-
double const[Months];
-
}
这种声明枚举并不会创建类数据成员,也就是所有对象中都不包含枚举。
Months只是一个符号名称,在作用域遇到时自动替换。
5.2 第二种方式是使用关键字static:
-
calss Bakery
-
{
-
private:
-
static const int Months =12;
-
double costs[Months];
-
}
这将创建一个名为Months的常量,该常量将于其他静态变量存储在一起,而不是存储在对象中。
6 作用域内枚举
两个枚举定义中的枚举量可能会发生冲突
enum egg {big, small, large};
enum shirt {big, small, large};
上面无法编译,因为在相同作用域,发生问题
C++11提供一种新的枚举, class 或者 struct
enum class egg{big, small, large};
enum class shirt{big, small, large};
如何使用?
egg choice = egg::large;
shirt FLUO= shirt::large;
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/98880185
- 点赞
- 收藏
- 关注作者
评论(0)