C++初级入门

#include <iostream>

using namespace std;//没有他的话,下面要改成std::cout

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

编译器mingw开发工具codelock.endl也是换行,不过它比\n多一个清除缓存流的效果。

cin>>r;cin代表标准输入。

#include <iostream>
using namespace std;
class circle{
public:
    double r;
    double s;
public:
    void setr(double a){
                r=a;
        }
    double getr(){
            return r;
        }
    double gets(){
            s=3.14*r*r;
            return s;
        }
};

int main()
{
    double r;
    circle c;
    cout << "请输入圆的半径R" ;
    cin>>r;
    c.setr(r);
   cout<<"圆的面积是"<<c.gets()<<endl;
}

用面对对象求圆的面积

#include <iostream>
using namespace std;
    
// first name space
namespace first_space{
    void func(){
    cout << "Inside first_space" << endl;
    }
}
    
// second name space
namespace second_space{
//此处func与第一处命名空间内函数名相同
    void func(){
        cout << "Inside second_space" << endl;
    }
}
    
// 使用第一个namespace
using namespace first_space;
int main () {
     
// This calls function from first name space.
    func();
       
    return 0;
}

namespace的用法。如果没有using,下面就要first_soace::func。

c语言中的变量必须全在开头定义,而C++中的等需要时再定义。c语言中register定义的变量存在寄存器中。不能用&取地址。

C++中struct与class功能是一样的。bool类型的值不是1就是0.

C++与C中const与define的区别

1.编译器处理方式 
define – 在预处理阶段进行替换 
const – 在编译时确定其值

2.类型检查 
define – 无类型,不进行类型安全检查,可能会产生意想不到的错误 
const – 有数据类型,编译时会进行类型检查

3.内存空间 
define – 不分配内存,给出的是立即数,有多少次使用就进行多少次替换,在内存中会有多个拷贝,消耗内存大 
const – 在静态存储区中分配空间,在程序运行过程中内存中只有一个拷贝

#include <iostream>

int main(){
    int a=10;
    int &b=a;//可以看成已定义变量的别名,同一空间的门牌号
    b=100;
    printf("%d\n %d",a,b);//100 100

}

C++的引用为了别的变量名而存在,有些场合可以替代指针。(个人理解引用就是单纯引用,指针传递的是地址,引用内部实现是一个常指针。它帮我们隐藏了)

当传入函数的是(&a)时,下面直接传入(b)即可。当传入的是(*b)时,下方调用就要传入(&a)手动引用地址。

同时函数int func()返回的是值。而int* func()返回的是变量。

//C语言的二级引用
#include <iostream>
struct teacher{
  int age;,
};
//C语言的二级引用
void gerteacher(teacher **pt){
        teacher *temp=NULL;//一定要初始化,且大写。tem为局部变量,函数结束即消失。
        temp=(teacher*)malloc(sizeof(teacher));//到堆内存分配空间,用来保存即将结束的tem
        temp->age=25;
        *pt=temp;//用形参指向堆内存的新建空间.
//C++的写法
void getteacher(teacher* &myt){
        myt=(teacher*)malloc(sizeof(teacher));
        myt->age=22;
}
int main(){//函数加载进栈
    teacher *p1=NULL;//记得初始化
    gerteacher(&p1);//上方是双*所以用取地址
    geteacher(p1);.//c++的写法
    std::cout<<p1->age<<std::endl;
    system("pause");

}

inline内联的用法

C++编译器可以将一个函数进行内联编译

被C++编译器内联编译的函数叫做内联函数

内联函数在最终生成的代码中是没有定义的

C++编译器直接将函数体插入在函数调用的地方

内联函数没有普通函数调用时的额外开销(压栈,跳转,返回)

#include <iostream>
inline void print(){
    int a=10;
    printf("%d",&a);
}
int main(){
    print();//使用内联nline相当于将print函数下方代码块嵌入print位置
    system("pause");

}
#include <iostream>
void print(int a=10){
    std::cout<<a<<std::endl;
}
int main(){//默认的参数的使用
    print();//10
    print(5);//5
    system("pause");
}

函数的重载,与Java的重载差不多。但带默认参数的重载编译不能通过。

重载函数在本质上是相互独立的不同函数(静态链编)
重载函数的函数类型是不同的
函数返回值不能作为函数重载的依据
函数重载是由函数名和参数列表决定的。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值