zoukankan      html  css  js  c++  java
  • C++3

    76、为什么C语言不支持重载而C++支持重载

    1 这个问题就好比为什么会有externC这种东西C++不是兼容C 的吗
    2 原因是C++编译器在编译的时候对于不同类型的函数会编译成不同类型的函数名,比如说 int fun(int a, int b) 可能就会被编译成_int_fun_int_int这样子,而C语言的编译器不会,所以如果不写externC  C++编译器会报错,因为它无法找到对应的函数。这也是C++为什么支持重载的原因
    View Code

    77、判断是否是重载

      int *fun(int *)  

      double *fun(double *)

      以上两个是正确的     返回值都是指针

    78、

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class A {
     5 virtual int fun() {}
     6 };
     7 class B {
     8 virtual int fu() {}
     9 };
    10 class D {
    11 virtual int fu() {}
    12 };
    13 
    14 class C :public A, public B,public D {
    15 };
    16 
    17 int main() {
    18 cout << sizeof(A) << endl;//4
    19 cout << sizeof(C) << endl;//12
    20 }
    View Code

    79、vector 迭代器删除要  vec.earse(it --);  因为vector删除元素之后会自动前移

     80、volatile的作用:

    1 C语言中
    2 volatile 表示一个变量时随时可能变化的,编译器需要每次从该变量的地址去值
    3 volatile 有关的操作不需要编译器进行优化了,以避免发生错误,因为优化的话如果编译器发现两次操作都没有对某个变量的值进行改变那么他会自动取得上一次的值,只对于寄存器变量以及端口数据很容易出错。
    View Code

     81、swap

     1 void swap(int *p, int *q) {
     2     int *tmp;
     3     *tmp = *p;
     4     *p = *q;
     5     *q = *tmp;
     6 }
     7 //这样处理是非常危险的  因为 tmp是个野指针  我对于野指针赋值是很危险的
     8 
     9 正解
    10 void swap(int *p, int *q) {
    11     int tmp;
    12     tmp = *p;
    13     *p = *q;
    14     *q = tmp;
    15 }
    View Code
  • 相关阅读:
    例行更新,防止被踢
    C语言 遍历磁盘目录
    析构函数的调用
    数组学习笔记
    函数学习笔记
    c++语言 纯虚函数的使用
    c++语言 内联方法
    复制构造函数
    c++语言 覆盖成员函数
    面向对象程序设计
  • 原文地址:https://www.cnblogs.com/zhanzhao/p/5905736.html
Copyright © 2011-2022 走看看