【C++】C++语法问题

C++与C区别:

个人理解:C++有类封装,等同于C中的结构体+方法;


如何为定义一个常量,作为一系列数组的维度?

相似问题: int a[m][n]; 请问这个m,n的值怎么通过用户输入来获取;

解决方案参考

int main()
{
int n;
int m;
int **p = new int*[m];
for(int i = 0; i < m; i++)
{
p[i] = new int[n];
}
return 0;
}

程序执行顺序问题

问题: 用VS2015写C++时报错“找不到标识符”,而函数A明显是定义过的。

解决参考

把函数的定义改到main函数的前面。因为这个CPP并没有面向对象的结构。所以进行编译时是“顺序编译”的,而main函数的定义又在A的定义之前、自然找不到标识符了。


namespace

namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都可能使用相同的名字来实现不同的库,于是程序员在合并程序的时候就会可能出现名字的冲突。namespace引入了复杂性,解决了这个问题。namespace允许像类,对象,函数聚集在一个名字下。本质上讲namespace是对全局作用域的细分。

我想大家都见过这样的程序吧:

hello_world.c
#include <iostream>
using namespace std;


int main()
{
    printf("hello world !");
    return 0;
}

但是namespace远不止如此,让我们再多了解一下namespace

namespace的格式基本格式是

namespace identifier
{
    entities;
}
举个例子,
namespace exp
{
    int a,b;
}

有点类似于类,但完全是两种不同的类型。为了在namespace外使用namespace内的变量我们使用::操作符,如下:

exp::a

exp::b

使用namespace可以有效的避免重定义的问题。

参考:http://blog.csdn.net/yao_zhuang/article/details/1853625

双冒号::

(1)表示“域操作符”

例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时, 就要写成void A::f(),表示这个f()函数是类A的成员函数。

(2)直接用在全局函数前,表示是全局函数 

例:在VC里,你可以在调用API 函数里,在API函数名前加::

(3)表示引用成员函数及变量,作用域成员运算符

例:System::Math::Sqrt() 相当于System.Math.Sqrt()

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值