3.4 如何判断变量是申明还是定义·如何计算类的对象的大小·this指针·命名规则·C++类型

1. 如何判断变量是申明还是定义?

        如果这个变量开辟了空间,那么这个变量就属于定义,否则这个变量就是申明。一些基本的知识需要知道,如全局变量开辟了空间,类中的变量是没有开辟空间的,当你用值来赋值给类中的变量时,此时类中的变量就开辟了空间。你可以理解为类中的变量是图纸,当你赋值时,类中的变量这个图纸给你做了一栋房子,然后把你的值放进去这个房子里了。还需要注意两个例子:

        int age 是定义,extern int age 属于申明;申明不会进符号表,定义会进符号表

        int age (age是全局变量)与 static int age是可以同时存在的,不会出现“出现相同的全局变量”这种情况,全局变量相同时链接会出现问题,而 int age 是全局变量是所有文件可读,static int age 是当前文件可读,进行连接时不会出现问题。

2. 如何计算类的对象的大小?

        计算类的大小时,不考虑申明的函数的大小,因为申明的函数在公共代码区,如果一定要考虑大小,那么这个函数的大小要么是4字节要么是8字节,因为函数以指针形式存在!剩下的变量按照结构体内存对齐的规则进行计算。

        还需要知道的一点是,空类的大小为1字节。空类是指没有成员变量的类,但是可以有成员函数,这1字节是占位,标识对象存在,不存储实际数据。

3. this指针

        C++非静态的成员函数第一个位置都有一个隐含的参数,参数名字规定死了就叫this指针。如

class data
{
public:
        void printA()
private;
        int _a
}

实际情况是
class data
{
public:
        void printA(data* const this)
private;
        int _a
}

        需要注意的是,this指针存在栈中,因为this是形参。

另看如下一张网络截图增加理解:

4.命名规则

        C++命名变量前一般加_,如_Year,这样做是防止与函数形参重名,如Year = Year 就不知道是谁赋值给谁了,特别容易出错,一般Year形式用在函数形参中,_Year则不是。

        命名规则: 

                        a)单词和单词之间首字母大写,这叫驼峰法。如GetYear。这种形式C++居多

                        b)单词全部小写,单词间用_分割,如get_year。这种形式Linux居多

        驼峰法:

                        1)函数名,类名等所有单词首字母大写;如DataMgr

                        2)变量首字母小写,后面单词首字母大写;如dataMgr

                        3)成员变量,首字母前面加_;_dataMgr

5.C++类型

        内置类型:内置类型指C++语言自带的类型。如int,double,char,指针等等

        自定义类型:struct,class等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值